////////////////////////////////////////////////////////////////////////////////
//
// $Id$ 
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
// 
// This software consists of voluntary contributions is licensed under the 
// MIT <http://www.opensource.org/licenses/mit-license.php>. 
// 
// 
// Portuguese Translation
// 
// ESTE SOFTWARE É FORNECIDO “COMO ESTÁ”, SEM GARANTIAS DE QUALQUER ESPÉCIE, 
// EXPRESSAS OU TÁCITAS, INCLUINDO SEM LIMITAÇÕES, QUAISQUER GARANTIA DE COMERCIABILIDADE, 
// DE ADEQUAÇÃO A FINALIDADES ESPECÍFICAS OU DE NÃO VIOLAÇÃO A DIREITOS DE TERCEIROS. 
// EM NENHUMA HIPÓTESE OS AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS 
// POR QUAISQUER RECLAMAÇÕES E/OU INDENIZAÇÕES POR DANOS OU POR OUTROS MOTIVOS, 
// SEJAM ESSES DERIVADOS DE OBRIGAÇÕES CONTRATUAIS OU DE DECISÕES JUDICIAIS, 
// ILÍCITOS CIVIS OU OUTROS MOTIVOS, OS QUAIS VENHAM A OCORRER EM CONSEQÜÊNCIA 
// OU EM RELAÇÃO AO SOFTWARE , A SEU USO OU OUTRA FORMA DE NEGOCIAÇÃO/UTILIZAÇÃO. 
// 
// Esse software consiste de contribuições voluntárias e está sobre a licença
// MIT <http://www.opensource.org/licenses/mit-license.php>.
// 
////////////////////////////////////////////////////////////////////////////////

package br.mcaslib.common
{
	import br.mcaslib.swiz.controller.ListObjNameIdController;
	import br.mcaslib.swiz.view.CrudContainer;
	import br.mcaslib.swiz.view.CrudFilterForeignKey;
	
	import flash.display.DisplayObject;
	
	import mx.binding.utils.BindingUtils;
	import mx.core.IVisualElement;
	
	import org.swizframework.core.Bean;

	[RemoteClass(alias="br.mcaslib.common.FieldForeignKey")]
	[Bindable]
	
	public class FieldForeignKey extends Field
	{
		//--------------------------------
		// bean_controller
		//--------------------------------
		
		private var _bean_controller_name:String;
		
		public function set bean_controller_name(value:String):void {
			this._bean_controller_name = value;
			var bean:Bean = SwizWrapper.swiz.beanFactory.getBeanByName( this._bean_controller_name );
			this.controller = bean.source as ListObjNameIdController;
		}
		
		public function get bean_controller_name():String {
			return this._bean_controller_name;
		}

		//--------------------------------
		// label_field
		//--------------------------------
		
		public var label_field:String = "nome";
		
		//--------------------------------
		// view
		//--------------------------------
		
		override public function createView():IVisualElement {
			var view:CrudFilterForeignKey = new CrudFilterForeignKey();
			BindingUtils.bindProperty( view.value, "dataProvider", controller, "collection" );
			controller.loadIfNotLoad();
			view.value.labelField = this.label_field;
			return view;
		}

		//--------------------------------
		// filterApply
		//--------------------------------
		
		override public function getFilterApply(view:IVisualElement):FilterApply {
			var crudView:CrudFilterForeignKey = view as CrudFilterForeignKey;
			var fa:FilterApply = super.getFilterApply(view);
			fa.operator = crudView.operator.selectedItem.value;
			fa.value = crudView.value.selectedItem.id;
			return fa;
		}
		
		override public function setFilterApply(view:IVisualElement, value:FilterApply):void {
			super.setFilterApply(view,value);
			var v:CrudFilterForeignKey = view as CrudFilterForeignKey;
			v.setOperator( value.operator );
			v.setValueId( value.value as Number );
		}
		
		[transient]
		public var controller:ListObjNameIdController = null;

		//--------------------------------------------------------------------------------------------------
		//
		// Constructor
		//
		//--------------------------------------------------------------------------------------------------
		
		public function FieldForeignKey() {
		}
	}
}
